//目标点，经纬度通过腾讯坐标拾取器拾取，一般推荐的是gcj02坐标
const to = {
	lng: 113.32446,
	lat: 23.10647,
	city: '广州市',
	name: '广州塔'
}

//获取当前位置信息
function getPoint() {
	return new Promise((resolve, reject) => {
		let point = {}; //初始化当前坐标信息
		let geolocation = new BMap.Geolocation();
		geolocation.getCurrentPosition(function(r) { //当前坐标信息
			if (this.getStatus() == BMAP_STATUS_SUCCESS) {
				mk = new BMap.Marker(r.point);
				point.lng = r.point.lng; //经度
				point.lat = r.point.lat; //纬度
				let gc = new BMap.Geocoder();
				gc.getLocation(r.point, function(rs) { //逆地址解释
					point.city = rs.addressComponents.city; //当前城市
					resolve(point);
				});
			} else {
				alert('failed' + this.getStatus());
			}
		});
	})
}

//因为百度地图当前定位是异步获取的一个方式，所以要使用async/await
async function goBd() {
	//等待异步获取数据
	await getPoint().then(point => {
		let destination = qqMapToBMap(to.lng, to.lat); //腾讯地图坐标转百度地图坐标
		let destination_lng = destination[0];
		let destination_lat = destination[1];
		location =
			'http://api.map.baidu.com/direction?origin=latlng:' + point.lat +
			',' + point.lng +
			'|name:我的位置&destination=latlng:' + destination_lat + ',' + destination_lng + '|name:' + to
			.name +
			'&origin_region=' + point.city + '&destination_region=' + to.city +
			'&mode=driving&output=html&src=webapp.baidu.openAPIdemo';
	});
};

function goGd() {
	location = 'https://uri.amap.com/navigation?from=&to=' + to.lat + ',' + to.lng + ',' + to.name +
		'&src=mypage&coordinate=gaode&callnative=0'
};

function goQQ() {
	location = 'https://apis.map.qq.com/uri/v1/routeplan?type=drive&to=' +
		to.name + '&tocoord=' + to.lat + ',' + to.lng + '&policy=1&referer=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77'
};

/**
 * 腾讯地图坐标转换百度地图坐标
 * lng 腾讯经度
 * lat 腾讯纬度
 */
function qqMapToBMap(lng, lat) {
	if (lng == null || lng == '' || lat == null || lat == '')
		return [lng, lat];
	var x_pi = 3.14159265358979324;
	var x = parseFloat(lng);
	var y = parseFloat(lat);
	var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
	var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
	var lng = (z * Math.cos(theta) + 0.0065).toFixed(5);
	var lat = (z * Math.sin(theta) + 0.006).toFixed(5);
	return [lng, lat];
};


/**
 * 百度地图坐标转换成腾讯地图坐标
 * lng 百度经度
 * lat 百度纬度
 */
function bMapToQQMap(lng, lat) {
	if (lng == null || lng == '' || lat == null || lat == '')
		return [lng, lat];
	var x_pi = 3.14159265358979324;
	var x = parseFloat(lng) - 0.0065;
	var y = parseFloat(lat) - 0.006;
	var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
	var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
	var lng = (z * Math.cos(theta)).toFixed(7);
	var lat = (z * Math.sin(theta)).toFixed(7);
	return [lng, lat];
}
